Query recommendations for a displayed resource

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for providing contextual information to a user. In one aspect, a method includes receiving, from a user device, a query-independent request for contextual information relevant to an active resource displayed in an application environment on the user device, generating multiple queries from displayed content from the resource, determining a quality score for each of the multiple queries, selecting one or more of the multiple queries based on their respective quality scores, and providing, to the user device for each of the selected one or more queries, a respective user interface element for display with the active resource, wherein each user interface element includes contextual information regarding the respective query and includes the respective query.

BACKGROUND

This specification relates to providing contextual information to auser.

A device may provide a user with contextual information. For example, adevice may display a web page about a particular subject, receive asearch query from the user including search terms for the particularsubject, retrieve search results responsive to the search query, andprovide the search results to the user.

Typical interaction models require users to provide some form of a userquery to a user device. For example, a user may be viewing article abouta particular piece of sporting equipment on a smart phone and state“show me reviews about this item.” A search process then analyzes thearticle, and the query which is dependent on the article, to determinesearch parameters and execute a search of resources to identifyresources that may satisfy the user's informational needs.

SUMMARY

In general, one innovative aspect of the subject matter described inthis specification can be embodied in methods that include the actionsof receiving, from a user device, a query-independent request forcontextual information relevant to an active resource displayed in anapplication environment on the user device, generating multiple queriesfrom displayed content from the resource, determining a quality scorefor each of the multiple queries, selecting one or more of the multiplequeries based on their respective quality scores, and providing, to theuser device for each of the selected one or more queries, a respectiveuser interface element for display with the active resource, where eachuser interface element includes contextual information regarding therespective query and includes the respective query.

Other embodiments of this aspect include corresponding computer systems,apparatus, and computer programs recorded on one or more computerstorage devices, each configured to perform the actions of the methods.A system of one or more computers can be configured to performparticular operations or actions by virtue of having software, firmware,hardware, or a combination of them installed on the system that inoperation causes or cause the system to perform the actions. One or morecomputer programs can be configured to perform particular operations oractions by virtue of including instructions that, when executed by dataprocessing apparatus, cause the apparatus to perform the actions.

The foregoing and other embodiments can each optionally include one ormore of the following features, alone or in combination. In certainaspects, generating multiple queries from displayed content from theresource includes generating different combinations of terms in thedisplayed content as the multiple queries. In some aspects, determininga quality score for each of the multiple queries includes determiningthe quality score for each of the multiple queries based at least on thevisual appearance of terms from which the respective query is generated.In some implementations, determining a quality score for each of themultiple queries includes determining that the terms from which aparticular query is generated appear in a title of the active resourceand determining the quality score for the particular query based atleast on determining that the terms from which the particular query isgenerated appear in the title of the active resource.

In certain aspects, determining a quality score for each of the multiplequeries includes determining a quality of search results responsive toeach query and determining the quality score for each of the multiplequeries based at least on the quality of search results responsive tothe respective query. In some aspects determining a quality score foreach of the multiple queries includes determining a measure of userengagement for each query and determining the quality score for each ofthe multiple queries based at least on the measure of user engagementfor each respective query. In some implementations, receiving, from auser device, a query-independent request for contextual informationrelevant to an active resource displayed in an application environmenton the user device includes receiving, from the user device, aquery-independent request that does not include one or more query termsentered by a user. In certain aspects, the resource includes one or moreof a web page, an application page, or a textual conversation.

Particular embodiments of the subject matter described in thisspecification can be implemented so as to realize one or more of thefollowing advantages. Contextual information that is likely to helpsatisfy a user's informational need may be provided by a device to auser without the user providing a query to the device. The contextualinformation provided by the device may be in the form of interfaceelements that can be selected to request resources responsive to searchqueries recommended by a system. The resources responsive to the searchqueries may satisfy the user's information need. Accordingly, thisresults in a convenient way for the user to obtain resources that maysatisfy the user's informational need. Contextual information may alsoinclude data describing certain facts, images and search results.

In particular, the system enables the input of a query-independentrequest for contextual information that is relevant to an activeresource displayed on the user device in a fluid and intuitive manner.The user no longer needs to type in query terms or speak query terms toobtain resources that satisfy the user's informational needs.Accordingly, users are more likely to solicit information to satisfytheir information needs as doing so can be accomplished in a manner thatis not only convenient for the user, but also in a relatively discretemanner so that bystanders are not disturbed by the user speaking intothe device. Also, because the user need not type in a query, the usermay, in some implementations, solicit the information when the userwould otherwise be unable to type effectively, e.g., when the user onlyhas one hand free.

Also, because the input of the query-independent request for contextualinformation results in a selection by the user of a recommended query,the system does not need to perform text-to-speech processing or processtyping input. This results in fewer input errors and erroneously inputqueries. Accordingly, when considered in the aggregate, thousands oferroneous and inaccurate queries are avoided, which in turn provides amore efficient use of search system resources. In other words, multipleerroneous query processing cycles are avoided, which reduces processingresources required and reduces overall system bandwidth requirements(or, alternatively, enables a larger number of users to be servicedwithout a commensurate increase in processing resources). Thisimprovement in the technological field of search processing is thusanother distinct advantage realized by the systems and methods describedbelow.

Additionally, the system may recommend queries that are more likely toprovide results that satisfy informational needs of the user. Forexample, the system may avoid recommending search queries that have fewor no results and avoid recommending search queries that are frequentlyfollowed by refined search queries. Accordingly, the system may reducethe need for users to try multiple different queries in an attempt tosatisfy their information need. Thus, the system may reduce the time,processing, and bandwidth needed for a user to obtain information thatsatisfies their informational needs.

The details of one or more embodiments of the subject matter describedin this specification are set forth in the accompanying drawings and thedescription below. Other features, aspects, and advantages of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example environment in which contextualinformation is provided for a displayed resource.

FIG. 2 is a more detailed block diagram of the example environment inwhich contextual information is provided for a displayed resource.

FIG. 3 is a flow diagram of an example process for providing contextualinformation for a displayed resource.

FIG. 4 is a schematic diagram of a computer system.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Sometimes a user may desire to receive additional information regardingthe subject matter of a resource that the user is currently viewing on adevice. For example, a user may be viewing a web page mentioning thatthe “Plexus 6X,” a particular make and model of a mobile user device, isnow available for preorder and may desire to obtain additionalinformation about how to preorder the “Plexus 6X.” The user may open aweb page for a search engine, type in “Plexus 6X Preorder” as a searchquery, scroll through a search results listing, and then select a searchresult to view. However, this process may be time consuming and requiremultiple interactions by the user.

Described below are systems and methods for providing contextualinformation for a displayed resource. Instead of providing contextualinformation based on a query entered by a user, the system may providecontextual information for a displayed resource and independent of aquery input in which a user specifies a particular query. To provide thecontextual information, the system detects that a user desirescontextual information. For example, a user viewing a webpage aboutpreordering the “Plexus 6X” on their phone may press a button for threeseconds, or provide some other indication like pressing a dedicatedbutton or performing a particular gesture, to indicate that the userwishes to receive contextual information based on the displayed webpage.The system may detect the indication and, in response, recommend popularsearch queries that include terms that are currently being displayed onthe phone and typically satisfy informational needs of users. Forexample, the system may identify that the terms “Plexus 6X” and“preorder” are both being displayed, determine that “Plexus 6X preorder”is a popular search query and determine that users typically do notprovide refined search queries, e.g., queries where terms are added orremoved from a previous query to better identify results that satisfy auser's continued informational need, after viewing results for the query“Plexus 6X preorder.” Based on these determinations, the system providesan interface element that includes the query “Plexus 6X preorder” to thedevice and an element that can be selected to request results for thequery.

These features and additional features are described in more detailbelow.

FIG. 1 is a block diagram of an example environment 100 in whichcontextual information is provided for a displayed resource. Theenvironment 100 includes a user device 110 and a contextual informationserver 150.

A user device 110 is used by a user to obtain contextual information fora displayed resource. The user device 110 is an electronic device thatis capable of requesting and receiving resources over the network.Example user devices 110 include personal computers (e.g., desktops orlaptops), mobile communication devices (e.g., smart phones or tablets),and other devices that can send and receive data over the network (e.g.,televisions, and glasses or watches with network communicationfunctionality). A user device typically includes a user application,e.g., a web browser, to facilitate the sending and receiving of dataover the network. The web browser can enable a user to display andinteract with text, images, videos, music and other informationtypically located on a web page at a website on the World Wide Web or alocal area network. The user device 110 may use any appropriateapplication to send and receive data over the network and presentrequested resources to a user.

A resource is data that includes content that can be visibly rendered bythe user device 110. For example, resources may include HTML pages,electronic documents, images files, video files, text messageconversations, e-mails, graphical user interfaces of applications, etc.An active resource may be considered a resource that is currently beingdisplayed on the user device 110. Typically, the active resource isrendered by an application that is running in a foreground of a userdevice.

The user device 110 detects that a user desires contextual informationfor an active displayed resource. For example, the user device 110 maybe displaying a resource hosted by a website, where the resourceincludes text in the active viewport that describes that the “Plexus 6X”is now available for preorder. The user may generate an indication ofdesiring contextual information, e.g., by pressing a button for threeseconds or tapping the screen according to a predefined tap patter, etc.Assume for illustrative purposes the user performs a long press thatindicates that the user desires contextual information for a displayedresource. In response, the user device 110 provides a request to thecontextual information server 150 for contextual information for thedisplayed resource. For example, the user device 110 may provide arequest that includes a screenshot of the currently displayed portion ofthe active resource, where the portion includes the text “Plexus 6X isnow available for preorder.” In this example, information in the activewindow of the active resource is used to generate queries for contextualinformation, which will be described in more detail below. However,other information can also be used to generate queries, such as the textof the active resource, including text not displayed in the activewindow, the URI of the resource, and the like.

The request may be considered a query-independent request as the userdevice 110 provides the request to the contextual information server 150without having the user enter terms for a query, whether verbally,physically, or some other interaction. For example, after the userdevice 110 detects that a user has long pressed a button, the userdevice 110 may provide the request to the contextual information server150 without requesting additional information from the user.

In response to providing the request to the contextual informationserver 150, the user device 110 then receives a user interface elementfrom the contextual information server 150. The user interface elementmay include a recommended search query identified based on content inthe displayed resource text and contextual information in the form of anavigation link that may be selected to request results for the searchquery. For example, the user device 110 may receive a user interfaceelement that includes the text “Recommended Query,” “Plexus 6XPreorder,” and navigation links for searching for resources using thequery “Plexus 6X Preorder” and searching for news articles using thequery “Plexus 6X Preorder.”

For the purposes of illustration, the user interface element isdescribed as a card. However, other user interface elements may be used,for example, chat bubbles, selectable linked notes or footnotes,synthesized voice responses, or other forms. In some implementations,instead of a single user interface element that includes multiplenavigation links, a user interface element may include a singlenavigation link and multiple user interface elements may be received fordifferent resources.

The user device 110 displays the received contextual card to the user.For example, the user device 110 may generate a graphical panel 160 thatis shown overlaid on top of the displayed resource where the graphicalpanel 160 includes navigation links for the query recommended by thecard. In another example, the user device 110 may stop displaying theresource and instead display the graphical panel 160. The user device110 may enable the user to quickly return to the displayed resource. Forexample, the user device 110 may stop displaying the graphical panel 160in response to detecting that a user has interacted with, e.g., clickedor touched, a portion of the resource that is not overlaid by thegraphical panel 160. In another example, the user device 110 may stopdisplaying the graphical panel 160 and display the resource in responseto detecting that a user has interacted with, e.g., clicked or touched,a selectable option for closing the graphical panel 160.

FIG. 2 is a more detailed block diagram of the example environment 100in which contextual information is provided for a resource. Theenvironment 100 includes a client contextual module 210 on a user deviceand a contextual information server 150. The contextual informationserver 150 includes a query generator 220, a quality scoring engine 230,a query selection engine 240, and a contextual card provider 250. Insome implementations, the client contextual module 210 may be providedon the user device 110 shown in FIG. 1 .

The client contextual module 210 determines that a user desirescontextual information for a displayed resource. For example, the clientcontextual module 210 may determine that a user has rapidly pressed abutton three times when viewing a webpage about the “Plexus 6X” beingavailable for preorder (in this example, rapidly pressing the buttonthree times indicates that the user desires contextual information). Inresponse to determining that a user desires contextual information for adisplayed resource, the client contextual module 210 generates a requestto the contextual information server 150 for contextual information forthe displayed resource. For example, the client contextual module 210may generate a request to the contextual information server 150 forcontextual information for the webpage that describes that the “Plexus6X” is available for preorder.

The client contextual module 210 may include information about thedisplayed resource in the request. For example, the client contextualmodule 210 may generate a screenshot that is an image showing thewebpage and include the screenshot in the request. In another example,the client contextual module 210 by request that the operating system ofthe user device provide a tree based document object model that defineswhat is currently being rendered in an application that is in aforeground and include the model in the request. The document objectmodel may define text that appears in the displayed resource and theappearance of the text, e.g., size, color, position, font, or otherformatting, of the text. In yet another example the client contextualmodule 210 may include various handlers, such as text handlers and imagehandlers, to determine text and image data displayed in the activewindow of the device and provide the text and image data as part of therequest.

In some implementations, the client contextual module 210 may includethe information about the displayed resource in the request bydetermining a source of the displayed resource and including anindication of the source of the request. For example, the clientcontextual module 210 may determine that displayed resource is providedby a web browser application, in response, determine that the webbrowser application can provide a uniform resource locator (URL) for thedisplayed resource, and, in response, include an indication in therequest that the source of the active resource is the web browserapplication and the URL for the displayed resource. Information mayadditionally or alternatively include metadata describing the displayedresource, a location of the user device, a portion not currentlydisplayed of the resource, or an identity of the user. For example, theclient contextual module 210 may determine that the user device 110 islocated in Atlanta and include a location of “Atlanta” in the request.

The client contextual module 210 then provides the request to the querygenerator 220 without the user entering a query. For example, the clientcontextual module 210 provides the request to the query generator 220 inresponse to the user providing the indication that the user desirescontextual information for the displayed resource, e.g., three rapidbutton presses, a long button press, or some other indication, withoutthe user providing any further information, e.g., query terms, afterproviding the indication.

In response to providing the request to the query generator 220, theclient contextual module 210 receives a contextual card and renders thecontextual card. For example, the client contextual module 210 receivesa contextual card that includes a query “Plexus 6X Preorder” andnavigation links to request search results or news results for thequery. As will be described below, the contextual card is generated bythe contextual information server 150 in response to the queryindependent request.

The query generator 220 receives the query independent request forcontextual information for a displayed resource and generates queriesfrom the content of the displayed resource. For example, the querygenerator 220 may receive a screenshot including the text “Plexus 6X isnow available for preorder. The Plexus 6X offers blazing performance ina compact size” and generates queries of “Plexus 6X,” “Plexus 6XPreorder,” and “Performance.”

The query generator 220 may generate queries by combining text from thedisplayed resource in various combinations. For example, the querygenerator 220 may receive a screenshot including the text “Plexus 6X isnow available for preorder. The Plexus 6X offers blazing performance ina compact size,” perform optical character recognition to extract thetext from the screenshot, and then generate the query “Plexus 6XPreorder” by combining “Plexus 6X” and “Preorder” from the text. Inanother example, the query generator 220 may receive a document objectmodel that includes the text “Plexus 6X is now available for preorder.The Plexus 6X offers blazing performance in a compact size,” and select“Plexus 6X” from the text as the query.

In some implementations, the query generator 220 may use naturallanguage grammar rules to generate the queries. The query generator 220may generate queries with terms with different tenses or pluralitiesthan terms in the displayed resource. For example, the query generator220 may generate the query “blaze Plexus size” from “blazing,” “Plexus,”and “size” in the displayed resource.

In other implementations, the query generator 220 may generate a set ofall possible n-grams from the text. In still other implementations, stopwords may be removed from the text and the remaining text may be used togenerate the queries. Other appropriate query generation techniques mayalso be used.

The quality scoring engine 230 receives the queries from the querygenerator 220 and determines quality scores for each of the queries. Forexample, the quality scoring engine 230 may receive the queries “Plexus6X,” “Plexus 6X Preorder,” and “performance” from the query generator220 and determine a quality score of 50% for “Plexus 6X,” a qualityscore of 90% for “Plexus 6X Preorder,” and a quality score of 30% for“performance.” A quality score for a query may reflect a confidence thatthe query will identify resources that satisfy a user's informationalneed. For example, a quality score of 50% for “Plexus 6X” may reflect amedium confidence that the query will identify resources that satisfy auser's informational need and a quality score of “90%” for “Plexus 6XPreorder” may reflect a high confidence that the query will identifyresources that satisfy a user's informational need. Alternatively aquality score for each query may be simply be a value that indicates aquality of the query relative to the quality of other queries, and neednot represent a confidence that the query will identify resources thatsatisfy a user's informational need. Other appropriate metrics ofquality for a query may also be used for quality scores.

The quality scoring engine 230 may determine the quality score for asearch query based on one or more of a number of search resultsresponsive to the search query, the underlying quality of the referencesreferenced by the search results, a popularity of the search query, userbehavior regarding search results of the search query, the prominence oftext of the query in the content in the displayed resource, and thelike.

For determining the quality score based on a number of search resultsresponsive to the search query, the quality scoring engine 230 maydetermine quality scores that reflect a higher degree of confidence forqueries that have more search results that meet a minimum quality scoreand determine quality scores that reflect a lower degree of confidencefor queries that have fewer search results that meet the minimum qualityscores. For example, the quality scoring engine 230 may determine aquality score reflecting a high degree of confidence for a query “Plexus6X preorder” that results in many search results with relative highquality scores and a quality score reflecting a low degree of confidencefor a query “compact 6X blazing offers” that results in fewer searchresults that meet the minimum quality score. The quality scoring engine230 may provide the search query to a search engine to determine thatnumber of search results for the search query. For example, the qualityscoring engine 230 may provide the query “Plexus 6X preorder” to asearch engine and receive a response indicating that there are a highnumber of higher quality search results responsive the query, and inresponse, determine a quality score reflecting a high degree ofconfidence for the query.

For determining the quality score based on a popularity of the searchquery, the quality scoring engine 230 may determine quality scores thatreflect a higher degree of confidence for queries that are currentlymore popular than queries that are currently less popular. For example,the quality scoring engine 230 may determine a quality score reflectinga higher degree of confidence for a query “Plexus 6X preorder” that manypeople have submitted as a search query in the past week and a qualityscore reflecting a lower degree of confidence for a query “performance”that few people have submitted as a search query in the past week. Thequality scoring engine 230 may determine popularity of queries based oninformation from a query log database 232 that stores queries made byvarious users. For example, the query log database 232 may provide thequality scoring engine 230 information describing each time particularsearch queries were used.

For determining the quality score based on user behavior regardingsearch results of the search query, the quality scoring engine 230 maydetermine quality scores that reflect a higher degree of confidence forqueries where users did not provide refined search queries and maydetermine quality scores that reflect a lower degree of confidence forqueries where users provided refined search queries. The quality scoringengine 230 may determine whether users provided refined search resultsbased on query search history stored in the query log database 232.

For determining the quality score based on an appearance of content inthe displayed resource from which the search query is generated, thequality scoring engine 230 may determine quality scores that reflect ahigher degree of confidence for queries generated from terms that appearto be from a title in a displayed resource. For example, the qualityscoring engine 230 may determine that particular displayed text appearsto be underlined and centered, and in response, determine that theparticular displayed text is part of a title and determine a higherdegree of confidence for queries that include terms from the particulardisplayed text.

In some implementations, the quality scoring engine 230 may determinethat particular displayed text appears different than the majority ofother displayed text and, in response, determine quality scores thatreflect higher degrees of confidence for queries that include terms fromthe particular displayed text. For example, the quality scoring engine230 may determine that particular displayed text is bolded and themajority of displayed text is not bolded and, in response, determinequality scores that reflect higher degrees of confidence for queriesthat include terms from the particular displayed text.

In some implementations, the quality scoring engine 230 may determinequality scores that reflect a greater degree of confidence for queriesgenerated from terms that appear more frequently in the displayedresource. For example, the quality scoring engine 230 may determine that“Plexus 6X” is displayed twice and that “compact” is displayed once, andin response, determine a quality score for “Plexus 6X” that reflects agreater degree of confidence than a quality score for “compact.”

The query selection engine 240 may obtain the quality scores from thequality scoring engine 230 and select one or more queries to recommendto the user. For example, the query selection engine 240 may receive anidentification of “Plexus 6X” with the quality score 50%, “Plexus 6XPreorder” with the quality score 90%, and “performance” with the qualityscore 30% and, in response, select “Plexus 6X Preorder” to recommend tothe user.

The query selection engine 240 may select the queries based ondetermining whether the queries have respective quality scores thatsatisfy a quality threshold. For example, the query selection engine 240may select “Plexus 6X Preorder” as the quality score of 90% is greaterthan a quality threshold of 60%, 70%, 80%, or some other percentage lessthan 90%. In another example, the query selection engine 240 may notselect “performance” as the quality score of 30% is lower than a qualitythreshold of 35%, 40%, 55%, or some other percentage above 30%.

In some implementations, the query selection engine 240 may additionallyor alternatively select the queries based on a maximum number andprovide a corresponding card for each selected query. For example, thequery selection engine 240 may select a maximum of one, two, four, orsome other number of queries and select the maximum number of querieswith quality scores that reflect the greatest degree of confidence. Insome implementations, the query selection engine 240 may additionally oralternatively select the queries based on a minimum. For example, thequery selection engine 240 may select a minimum of one, two, four, orsome other number of queries with quality scores that reflect thegreatest degree of confidence.

The contextual card provider 250 may obtain an indication of the one ormore selected queries and, for each selected query, provide a contextualcard to the client contextual module 210 where the card includes theselected query and contextual information that is a selectable link forrequesting resources responsive to the selected query. For example, thecontextual card provider 250 may obtain an indication that “Plexus 6XPreorder” is selected and, in response, generate a contextual card andprovide the contextual card to the client contextual module 210, wherethe card includes the text “Recommended Query” and “Plexus 6X Preorder,”and includes a link that upon selection requests resources responsive tothe query “Plexus 6X Preorder.”

FIG. 3 is a flow diagram of a process 300 for providing contextualinformation for a displayed resource. For example, the process 300 canbe used by the contextual information server 150 from the environment100.

The process 300 includes receiving a query-independent request forcontextual information relevant to an active resource (310). Forexample, the query generator 220 may receive a request that includes adocument object model that defines (i) text of “Plexus 6X is nowavailable for preorder. The Plexus 6X offers blazing performance in acompact size” and (ii) how the text is currently being displayed on auser device. In another example, the query generator 220 may receive arequest that includes a screenshot of the text being displayed on a userdevice.

The process 300 includes generating multiple queries from displayedcontent in the resource (320). For example, the query generator 220 mayextract the text “Plexus 6X is now available for preorder. The Plexus 6Xoffers blazing performance in a compact size” from a screenshot in therequest or extract text “Plexus 6X is now available for preorder. ThePlexus 6X offers blazing performance in a compact size” from a documentobject model that represents at least a portion of a resource displayed,and then generate queries that represent different words from the textin various orders.

The process 300 includes determining a quality score for each of themultiple queries (330). For example, the quality scoring engine 230 mayreceive the queries “Plexus 6X,” “Plexus 6X Preorder,” and “Performance”and, in response, determine a quality score of 50% for “Plexus 6X” asthe query includes terms that appear in a title of the displayedresource, includes terms that appear multiple times in the displayedresource, and is moderately popular, determine a quality score of 90%for “Plexus 6X Preorder” as the query includes terms that appear in atitle of the displayed resource, includes terms that appear multipletimes in the displayed resource, and is very popular, and determine aquality score of 30% for “performance” as the query includes a term thatonly appears once in the displayed resource and is unpopular.

The process 300 includes selecting one or more queries based on thequality scores (340). For example, the query selection engine 240 mayreceive the query “Plexus 6X” labeled with a quality score of 50%, thequery “Plexus 6X Preorder” labeled with the quality score of 90%, andthe query “performance” labeled with the quality score of 30% and, inresponse, select the query “Plexus 6X Preorder” as the quality score of90% is higher than a quality threshold of 70% and not select the queries“Plexus 6X” and “performance” as the respective quality scores of 50%and 30% are below the quality threshold of 70%.

The process 300 includes, for each of the selected resources, providinga respective user interface element including the respective query andcontextual information regarding the respective query (350). Forexample, the contextual card provider 250 may generate a contextual cardthat includes the text “Recommended Query” and “Plexus 6X Preorder,” andincludes a selectable link for requesting a general search using thequery “Plexus 6X Preorder” and a selectable link for requesting a newssearch using the query “Plexus 6X Preorder.”

In some implementations, the process 300 can include additional steps,fewer steps, or some of the steps can be divided into multiple steps.For example, the contextual information server 150 may determinesub-quality scores based on respective factors that can be used fordetermining the quality scores, and then determine the quality scores byaggregating sub-quality scores.

In situations in which the systems discussed here collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures collect user information (e.g., information about a user'ssocial network, social actions or activities, profession, a user'spreferences, or a user's current location), or to control whether and/orhow to receive content from the content server that may be more relevantto the user. In addition, certain data may be treated in one or moreways before it is stored or used, so that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser, or a user's geographic location may be generalized where locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular location of a user cannot be determined. Thus, theuser may have control over how information is collected about the userand used by a content server.

Embodiments of the subject matter and the operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Embodiments of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's user device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., auser computer having a graphical user interface or a Web browser throughwhich a user can interact with an implementation of the subject matterdescribed in this specification, or any combination of one or more suchback-end, middleware, or front-end components. The components of thesystem can be interconnected by any form or medium of digital datacommunication, e.g., a communication network. Examples of communicationnetworks include a local area network (“LAN”) and a wide area network(“WAN”), an inter-network (e.g., the Internet), and peer-to-peernetworks (e.g., ad hoc peer-to-peer networks).

The computing system can include users and servers. A user and serverare generally remote from each other and typically interact through acommunication network. The relationship of user and server arises byvirtue of computer programs running on the respective computers andhaving a user-server relationship to each other. In some embodiments, aserver transmits data (e.g., an HTML page) to a user device (e.g., forpurposes of displaying data to and receiving user input from a userinteracting with the user device). Data generated at the user device(e.g., a result of the user interaction) can be received from the userdevice at the server.

An example of one such type of computer is shown in FIG. 4 , which showsa schematic diagram of a generic computer system 400. The system 400 canbe used for the operations described in association with any of thecomputer-implement methods described previously, according to oneimplementation. The system 400 includes a processor 410, a memory 420, astorage device 430, and an input/output device 440. Each of thecomponents 410, 420, 430, and 440 are interconnected using a system bus450. The processor 410 is capable of processing instructions forexecution within the system 400. In one implementation, the processor410 is a single-threaded processor. In another implementation, theprocessor 410 is a multi-threaded processor. The processor 410 iscapable of processing instructions stored in the memory 420 or on thestorage device 430 to display graphical information for a user interfaceon the input/output device 440.

The memory 420 stores information within the system 400. In oneimplementation, the memory 420 is a computer-readable medium. In oneimplementation, the memory 420 is a volatile memory unit. In anotherimplementation, the memory 420 is a non-volatile memory unit.

The storage device 430 is capable of providing mass storage for thesystem 400. In one implementation, the storage device 430 is acomputer-readable medium. In various different implementations, thestorage device 430 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device.

The input/output device 440 provides input/output operations for thesystem 400. In one implementation, the input/output device 440 includesa keyboard and/or pointing device. In another implementation, theinput/output device 440 includes a display unit for displaying graphicaluser interfaces.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of what may beclaimed, but rather as descriptions of features specific to particularembodiments. Certain features that are described in this specificationin the context of separate embodiments can also be implemented incombination in a single embodiment. Conversely, various features thatare described in the context of a single embodiment can also beimplemented in multiple embodiments separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

What is claimed is:
 1. A method implemented by one or more processors,the method comprising: displaying a resource in an applicationenvironment of a user device; receiving an input from a user thatindicates that the user desires information relevant to the resourcedisplayed in the application environment of the user device;transmitting, by the user device and to a server, a request for theinformation relevant to the resource displayed in the applicationenvironment of the user device, wherein the server is configured todetermine one or more queries based on the request for the informationrelevant to the resource displayed in the application environment of theuser device; receiving, by the user device and from the server, and foreach of the one or more queries, a respective selectable user interfaceelement; causing, for each of the one or more queries, the respectiveselectable user interface element to be provided for display at the userdevice; and in response to receiving a user selection of the respectiveselectable user interface element for a given query of the one or morequeries: causing the user device to navigate to an additional resourcethat is in addition to the resource displayed in the applicationenvironment of the user device.
 2. The method of claim 1, whereincausing the respective selectable user interface element to be providedfor display at the user device comprises: causing the respectiveselectable user interface element to overlay the resource displayed inthe application environment of the user device.
 3. The method of claim2, further comprising: in response to receiving the user selection ofthe resource displayed in the application environment of the user devicewhen the respective selectable user interface element has overlaid theresource displayed in the application environment of the user device:causing the respective selectable user interface element to be dismissedfrom the display at the user device.
 4. The method of claim 1, whereincausing the user device to navigate to the additional resource that isin addition to the resource displayed in the application environment ofthe user device comprises: displaying the additional resource in anadditional application environment of the user device, wherein theadditional application environment of the user device is in addition tothe application environment of the user device that is utilized todisplay the resource.
 5. The method of claim 1, wherein the resourcecomprises one or more of a web page, an application page, or a textualconversation.
 6. The method of claim 1, wherein the request for theinformation relevant to the resource displayed in the applicationenvironment of the user device does not include any query terms enteredby a user.
 7. The method of claim 1, wherein the request for theinformation relevant to the resource displayed in the applicationenvironment of the user device includes an indication of contentassociated with the resource displayed in the application environment ofthe user device.
 8. The method of claim 7, wherein the indication of thecontent associated with the resource displayed in the applicationenvironment of the user device comprises one or more of: a screenshot ofa currently displayed portion of the resource, textual data of theresource corresponding to the currently displayed portion of theresource, additional textual data of the resource corresponding to anadditional portion of the resource that is not currently displayed, or auniform resource identifier (URI) of the resource.
 9. The method ofclaim 1, wherein the request for the information relevant to theresource displayed in the application environment of the user device isa query-independent request.
 10. The method of claim 9, wherein, indetermining the one or more queries based on the request for theinformation relevant to the resource displayed in the applicationenvironment of the user device, the server is configured to: determine acorresponding score for each of the one or more queries in response toreceiving the query-independent request; and determine, based on thecorresponding scores, the one or more queries.
 11. A system comprising:at least one processor; and memory storing instructions that, whenexecuted, cause the at least one processor to: display a resource in anapplication environment of a user device; receive an input from a userthat indicates that the user desires information relevant to theresource displayed in the application environment of the user device;transmit, by the user device and to a server, a request for theinformation relevant to the resource displayed in the applicationenvironment of the user device, wherein the server is configured todetermine one or more queries based on the request for the informationrelevant to the resource displayed in the application environment of theuser device; receive, by the user device and from the server, and foreach of the one or more queries, a respective selectable user interfaceelement; cause, for each of the one or more queries, the respectiveselectable user interface element to be provided for display at the userdevice; and in response to receiving a user selection of the respectiveselectable user interface element for a given query of the one or morequeries: cause the user device to navigate to an additional resourcethat is in addition to the resource displayed in the applicationenvironment of the user device.
 12. The system of claim 11, wherein theinstructions to cause the respective selectable user interface elementto be provided for display at the user device comprise instructions to:cause the respective selectable user interface element to overlay theresource displayed in the application environment of the user device.13. The system of claim 12, wherein the instructions further cause theat least one processor to: in response to receiving the user selectionof the resource displayed in the application environment of the userdevice when the respective selectable user interface element hasoverlaid the resource displayed in the application environment of theuser device: cause the respective selectable user interface element tobe dismissed from the display at the user device.
 14. The system ofclaim 11, wherein the instructions to cause the user device to navigateto the additional resource that is in addition to the resource displayedin the application environment of the user device comprise instructionsto: display the additional resource in an additional applicationenvironment of the user device, wherein the additional applicationenvironment of the user device is in addition to the applicationenvironment of the user device that is utilized to display the resource.15. The system of claim 11, wherein the resource comprises one or moreof a web page, an application page, or a textual conversation.
 16. Thesystem of claim 11, wherein the request for the information relevant tothe resource displayed in the application environment of the user devicedoes not include any query terms entered by a user.
 17. The system ofclaim 11, wherein the request for the information relevant to theresource displayed in the application environment of the user deviceincludes an indication of content associated with the resource displayedin the application environment of the user device.
 18. The system ofclaim 17, wherein the indication of the content associated with theresource displayed in the application environment of the user devicecomprises one or more of: a screenshot of a currently displayed portionof the resource, textual data of the resource corresponding to thecurrently displayed portion of the resource, additional textual data ofthe resource corresponding to an additional portion of the resource thatis not currently displayed, or a uniform resource identifier (URI) ofthe resource.
 19. A non-transitory computer-readable storage mediumstoring instructions that, when executed, cause at least one processorto perform operations, the operations comprising: displaying a resourcein an application environment of a user device; receiving an input froma user that indicates that the user desires information relevant to theresource displayed in the application environment of the user device;transmitting, by the user device and to a server, a request for theinformation relevant to the resource displayed in the applicationenvironment of the user device, wherein the server is configured todetermine one or more queries based on the request for the informationrelevant to the resource displayed in the application environment of theuser device; receiving, by the user device and from the server, and foreach of the one or more queries, a respective selectable user interfaceelement; causing, for each of the one or more queries, the respectiveselectable user interface element to be provided for display at the userdevice; and in response to receiving a user selection of the respectiveselectable user interface element for a given query of the one or morequeries: causing the user device to navigate to an additional resourcethat is in addition to the resource displayed in the applicationenvironment of the user device.